<?php
App::uses('AppModel', 'Model');
/**
 * Auteur Model
 *
 * @property Livre $Livre
 */
class Auteur extends AppModel {

/**
 * Display field
 *
 * @var string
 */
	public $displayField = 'nom';

/**
 * Validation rules
 *
 * @var array
 */
	public $validate = array(
		'nom' => array(
			'notEmpty' => array(
				'rule' => array('notEmpty'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
	);

	//The Associations below have been created with all possible keys, those that are not needed can be removed

/**
 * hasAndBelongsToMany associations
 *
 * @var array
 */
	public $hasAndBelongsToMany = array(
		'Livre' => array(
			'className' => 'Livre',
			'joinTable' => 'auteurs_livres',
			'foreignKey' => 'auteur_id',
			'associationForeignKey' => 'livre_id',
			'unique' => 'keepExisting',
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'finderQuery' => '',
		)
	);
	
/**
 * getPopulaires method
 * Retourne les auteurs populaires,
 * Dans cette version du site on retourne les auteurs qui ont le plus de livres.
 * Dans une version plus évoluée, on pourrait retourner les auteurs 
 * dont les livres ont les meilleurs notes par exemeple.
 * @param limit string : le nombre max d'auteurs à retourner
 * @return auteur array : les auteurs
 */	
	public function getPopulaires($limit='15'){
		
		$query = 'select Auteur.id, Auteur.nombre, Auteur.prenom_nom FROM (SELECT Auteur.*, count(AuteursLivre.auteur_id) as nombre 
			FROM  auteurs Auteur, auteurs_livres AuteursLivre where Auteur.prenom_nom !="Inconnu" and AuteursLivre.auteur_id = Auteur.id 
			and AuteursLivre.auteur_id in (select distinct AuteursLivre.auteur_id from livres Livre, auteurs_livres AuteursLivre where Livre.id=AuteursLivre.livre_id)
			group by AuteursLivre.auteur_id order by nombre DESC) as Auteur ';
		if($limit) $query .= ' LIMIT '.$limit;
		
		$auteurs = $this->query($query);
		return $auteurs;
	}
}
